<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1999-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Evaluation of logical expressions (The GNU Fortran Compiler)</title>

<meta name="description" content="Evaluation of logical expressions (The GNU Fortran Compiler)">
<meta name="keywords" content="Evaluation of logical expressions (The GNU Fortran Compiler)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<link href="index.html" rel="start" title="Top">
<link href="Option-Index.html" rel="index" title="Option Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Compiler-Characteristics.html" rel="up" title="Compiler Characteristics">
<link href="MAX-and-MIN-intrinsics-with-REAL-NaN-arguments.html" rel="next" title="MAX and MIN intrinsics with REAL NaN arguments">
<link href="Internal-representation-of-LOGICAL-variables.html" rel="prev" title="Internal representation of LOGICAL variables">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en">
<span id="Evaluation-of-logical-expressions"></span><div class="header">
<p>
Next: <a href="MAX-and-MIN-intrinsics-with-REAL-NaN-arguments.html" accesskey="n" rel="next">MAX and MIN intrinsics with REAL NaN arguments</a>, Previous: <a href="Internal-representation-of-LOGICAL-variables.html" accesskey="p" rel="prev">Internal representation of LOGICAL variables</a>, Up: <a href="Compiler-Characteristics.html" accesskey="u" rel="up">Compiler Characteristics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<span id="Evaluation-of-logical-expressions-1"></span><h3 class="section">4.3 Evaluation of logical expressions</h3>

<p>The Fortran standard does not require the compiler to evaluate all parts of an
expression, if they do not contribute to the final result.  For logical
expressions with <code>.AND.</code> or <code>.OR.</code> operators, in particular, GNU
Fortran will optimize out function calls (even to impure functions) if the
result of the expression can be established without them.  However, since not
all compilers do that, and such an optimization can potentially modify the
program flow and subsequent results, GNU Fortran throws warnings for such
situations with the <samp>-Wfunction-elimination</samp> flag.
</p>




</body>
</html>
